'''
引用：
1.不是在函数中使用，可以通过sys.getrefcount()函数查看引用的个数
   del 变量  表示删除一个引用
2.函数的引用：
   必须分清传递的值是可变类型还是不可变类型
   1.函数的参数是可变类型，函数内部修改了参数的值，函数外部的值也会发生改变
   2.函数的参数是不可变类型，函数内部修改了参数的值，函数外部的值不会发生改变
'''
a = 10
b = a
c = a

print(id(a))
print(id(b))
print(id(c))
print('--------------------------')
import sys

print(sys.getrefcount(a))

list1 = [1, 2, 3, 4, 5]
list2 = list1 # liat1将其引用地址给list2赋值
list3 = list1

print(sys.getrefcount(list1))

del list1
print(sys.getrefcount(list2))

del list2
print(sys.getrefcount(list3))
print('----------------------------------------')

def test(n1):  # n1 是函数的局部变量
    for i in range(n):
        print('-->',i)

    n1 += 1

n = 9
test(n)
print(n)
print('----------------------------------------')

list1 = [1, 2, 3]
def test1(l):
    if isinstance(l,list):
        for i in l:
            print('+++++>',i)
        l.insert(0,8)
    else:
        print('不是列表类型')

test1(list1)
print(list1)
